home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Bank smakow / BankSmakow.air / BankSmakow.swf / scripts / mx / managers / DragManagerImpl.as < prev    next >
Text File  |  2009-12-16  |  12KB  |  333 lines

  1. package mx.managers
  2. {
  3.    import flash.display.DisplayObject;
  4.    import flash.events.Event;
  5.    import flash.events.IEventDispatcher;
  6.    import flash.events.MouseEvent;
  7.    import flash.geom.Point;
  8.    import mx.core.DragSource;
  9.    import mx.core.IFlexDisplayObject;
  10.    import mx.core.IUIComponent;
  11.    import mx.core.UIComponentGlobals;
  12.    import mx.core.mx_internal;
  13.    import mx.events.DragEvent;
  14.    import mx.events.InterDragManagerEvent;
  15.    import mx.events.InterManagerRequest;
  16.    import mx.managers.dragClasses.DragProxy;
  17.    import mx.styles.CSSStyleDeclaration;
  18.    import mx.styles.StyleManager;
  19.    
  20.    use namespace mx_internal;
  21.    
  22.    public class DragManagerImpl implements IDragManager
  23.    {
  24.       
  25.       private static var instance:IDragManager;
  26.       
  27.       mx_internal static const VERSION:String = "3.5.0.12683";
  28.       
  29.       private static var sm:ISystemManager;
  30.        
  31.       
  32.       private var bDoingDrag:Boolean = false;
  33.       
  34.       private var sandboxRoot:IEventDispatcher;
  35.       
  36.       public var dragProxy:DragProxy;
  37.       
  38.       private var dragInitiator:IUIComponent;
  39.       
  40.       private var mouseIsDown:Boolean = false;
  41.       
  42.       public function DragManagerImpl()
  43.       {
  44.          var _loc1_:IEventDispatcher = null;
  45.          super();
  46.          if(instance)
  47.          {
  48.             throw new Error("Instance already exists.");
  49.          }
  50.          if(!sm.isTopLevelRoot())
  51.          {
  52.             sandboxRoot = sm.getSandboxRoot();
  53.             sandboxRoot.addEventListener(InterDragManagerEvent.DISPATCH_DRAG_EVENT,marshalDispatchEventHandler,false,0,true);
  54.          }
  55.          else
  56.          {
  57.             _loc1_ = sm;
  58.             _loc1_.addEventListener(MouseEvent.MOUSE_DOWN,sm_mouseDownHandler,false,0,true);
  59.             _loc1_.addEventListener(MouseEvent.MOUSE_UP,sm_mouseUpHandler,false,0,true);
  60.             sandboxRoot = sm;
  61.             sandboxRoot.addEventListener(InterDragManagerEvent.DISPATCH_DRAG_EVENT,marshalDispatchEventHandler,false,0,true);
  62.          }
  63.          sandboxRoot.addEventListener(InterManagerRequest.DRAG_MANAGER_REQUEST,marshalDragManagerHandler,false,0,true);
  64.          var _loc2_:InterManagerRequest = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  65.          _loc2_.name = "update";
  66.          sandboxRoot.dispatchEvent(_loc2_);
  67.       }
  68.       
  69.       public static function getInstance() : IDragManager
  70.       {
  71.          if(!instance)
  72.          {
  73.             sm = SystemManagerGlobals.topLevelSystemManagers[0];
  74.             instance = new DragManagerImpl();
  75.          }
  76.          return instance;
  77.       }
  78.       
  79.       private function marshalDragManagerHandler(param1:Event) : void
  80.       {
  81.          var _loc3_:InterManagerRequest = null;
  82.          if(param1 is InterManagerRequest)
  83.          {
  84.             return;
  85.          }
  86.          var _loc2_:Object = param1;
  87.          switch(_loc2_.name)
  88.          {
  89.             case "isDragging":
  90.                bDoingDrag = _loc2_.value;
  91.                break;
  92.             case "acceptDragDrop":
  93.                if(dragProxy)
  94.                {
  95.                   dragProxy.target = _loc2_.value;
  96.                }
  97.                break;
  98.             case "showFeedback":
  99.                if(dragProxy)
  100.                {
  101.                   showFeedback(_loc2_.value);
  102.                }
  103.                break;
  104.             case "getFeedback":
  105.                if(dragProxy)
  106.                {
  107.                   _loc2_.value = getFeedback();
  108.                }
  109.                break;
  110.             case "endDrag":
  111.                endDrag();
  112.                break;
  113.             case "update":
  114.                if(dragProxy && isDragging)
  115.                {
  116.                   _loc3_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  117.                   _loc3_.name = "isDragging";
  118.                   _loc3_.value = true;
  119.                   sandboxRoot.dispatchEvent(_loc3_);
  120.                }
  121.          }
  122.       }
  123.       
  124.       private function sm_mouseUpHandler(param1:MouseEvent) : void
  125.       {
  126.          mouseIsDown = false;
  127.       }
  128.       
  129.       public function get isDragging() : Boolean
  130.       {
  131.          return bDoingDrag;
  132.       }
  133.       
  134.       public function doDrag(param1:IUIComponent, param2:DragSource, param3:MouseEvent, param4:IFlexDisplayObject = null, param5:Number = 0, param6:Number = 0, param7:Number = 0.5, param8:Boolean = true) : void
  135.       {
  136.          var _loc9_:Number = NaN;
  137.          var _loc10_:Number = NaN;
  138.          var _loc18_:CSSStyleDeclaration = null;
  139.          var _loc19_:Class = null;
  140.          if(bDoingDrag)
  141.          {
  142.             return;
  143.          }
  144.          if(!(param3.type == MouseEvent.MOUSE_DOWN || param3.type == MouseEvent.CLICK || mouseIsDown || param3.buttonDown))
  145.          {
  146.             return;
  147.          }
  148.          bDoingDrag = true;
  149.          var _loc11_:InterManagerRequest;
  150.          (_loc11_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST)).name = "isDragging";
  151.          _loc11_.value = true;
  152.          sandboxRoot.dispatchEvent(_loc11_);
  153.          (_loc11_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST)).name = "mouseShield";
  154.          _loc11_.value = true;
  155.          sandboxRoot.dispatchEvent(_loc11_);
  156.          this.dragInitiator = param1;
  157.          dragProxy = new DragProxy(param1,param2);
  158.          sm.addChildToSandboxRoot("popUpChildren",dragProxy);
  159.          if(!param4)
  160.          {
  161.             param4 = new (_loc19_ = (_loc18_ = StyleManager.getStyleDeclaration("DragManager")).getStyle("defaultDragImageSkin"))();
  162.             dragProxy.addChild(DisplayObject(param4));
  163.             _loc9_ = param1.width;
  164.             _loc10_ = param1.height;
  165.          }
  166.          else
  167.          {
  168.             dragProxy.addChild(DisplayObject(param4));
  169.             if(param4 is ILayoutManagerClient)
  170.             {
  171.                UIComponentGlobals.layoutManager.validateClient(ILayoutManagerClient(param4),true);
  172.             }
  173.             if(param4 is IUIComponent)
  174.             {
  175.                _loc9_ = (param4 as IUIComponent).getExplicitOrMeasuredWidth();
  176.                _loc10_ = (param4 as IUIComponent).getExplicitOrMeasuredHeight();
  177.             }
  178.             else
  179.             {
  180.                _loc9_ = param4.measuredWidth;
  181.                _loc10_ = param4.measuredHeight;
  182.             }
  183.          }
  184.          param4.setActualSize(_loc9_,_loc10_);
  185.          dragProxy.setActualSize(_loc9_,_loc10_);
  186.          dragProxy.alpha = param7;
  187.          dragProxy.allowMove = param8;
  188.          var _loc12_:Object;
  189.          if((_loc12_ = param3.target) == null)
  190.          {
  191.             _loc12_ = param1;
  192.          }
  193.          var _loc13_:Point = new Point(param3.localX,param3.localY);
  194.          _loc13_ = DisplayObject(_loc12_).localToGlobal(_loc13_);
  195.          var _loc14_:Number = (_loc13_ = DisplayObject(sandboxRoot).globalToLocal(_loc13_)).x;
  196.          var _loc15_:Number = _loc13_.y;
  197.          var _loc16_:Point = DisplayObject(_loc12_).localToGlobal(new Point(param3.localX,param3.localY));
  198.          _loc16_ = DisplayObject(param1).globalToLocal(_loc16_);
  199.          dragProxy.xOffset = _loc16_.x + param5;
  200.          dragProxy.yOffset = _loc16_.y + param6;
  201.          dragProxy.x = _loc14_ - dragProxy.xOffset;
  202.          dragProxy.y = _loc15_ - dragProxy.yOffset;
  203.          dragProxy.startX = dragProxy.x;
  204.          dragProxy.startY = dragProxy.y;
  205.          if(param4 is DisplayObject)
  206.          {
  207.             DisplayObject(param4).cacheAsBitmap = true;
  208.          }
  209.          var _loc17_:Object;
  210.          if(_loc17_ = dragProxy.automationDelegate)
  211.          {
  212.             _loc17_.recordAutomatableDragStart(param1,param3);
  213.          }
  214.       }
  215.       
  216.       private function sm_mouseDownHandler(param1:MouseEvent) : void
  217.       {
  218.          mouseIsDown = true;
  219.       }
  220.       
  221.       public function showFeedback(param1:String) : void
  222.       {
  223.          var _loc2_:InterManagerRequest = null;
  224.          if(dragProxy)
  225.          {
  226.             if(param1 == DragManager.MOVE && !dragProxy.allowMove)
  227.             {
  228.                param1 = DragManager.COPY;
  229.             }
  230.             dragProxy.action = param1;
  231.          }
  232.          else if(isDragging)
  233.          {
  234.             _loc2_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  235.             _loc2_.name = "showFeedback";
  236.             _loc2_.value = param1;
  237.             sandboxRoot.dispatchEvent(_loc2_);
  238.          }
  239.       }
  240.       
  241.       public function acceptDragDrop(param1:IUIComponent) : void
  242.       {
  243.          var _loc2_:InterManagerRequest = null;
  244.          if(dragProxy)
  245.          {
  246.             dragProxy.target = param1 as DisplayObject;
  247.          }
  248.          else if(isDragging)
  249.          {
  250.             _loc2_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  251.             _loc2_.name = "acceptDragDrop";
  252.             _loc2_.value = param1;
  253.             sandboxRoot.dispatchEvent(_loc2_);
  254.          }
  255.       }
  256.       
  257.       private function marshalDispatchEventHandler(param1:Event) : void
  258.       {
  259.          if(param1 is InterDragManagerEvent)
  260.          {
  261.             return;
  262.          }
  263.          var _loc2_:Object = param1;
  264.          var _loc3_:DisplayObject = SystemManager.getSWFRoot(_loc2_.dropTarget);
  265.          if(!_loc3_)
  266.          {
  267.             return;
  268.          }
  269.          var _loc4_:DragEvent;
  270.          (_loc4_ = new DragEvent(_loc2_.dragEventType,_loc2_.bubbles,_loc2_.cancelable)).localX = _loc2_.localX;
  271.          _loc4_.localY = _loc2_.localY;
  272.          _loc4_.action = _loc2_.action;
  273.          _loc4_.ctrlKey = _loc2_.ctrlKey;
  274.          _loc4_.altKey = _loc2_.altKey;
  275.          _loc4_.shiftKey = _loc2_.shiftKey;
  276.          _loc4_.draggedItem = _loc2_.draggedItem;
  277.          _loc4_.dragSource = new DragSource();
  278.          var _loc5_:Array;
  279.          var _loc6_:int = (_loc5_ = _loc2_.dragSource.formats).length;
  280.          var _loc7_:int = 0;
  281.          while(_loc7_ < _loc6_)
  282.          {
  283.             _loc4_.dragSource.addData(_loc2_.dragSource.dataForFormat(_loc5_[_loc7_]),_loc5_[_loc7_]);
  284.             _loc7_++;
  285.          }
  286.          if(!_loc2_.dropTarget.dispatchEvent(_loc4_))
  287.          {
  288.             param1.preventDefault();
  289.          }
  290.       }
  291.       
  292.       public function getFeedback() : String
  293.       {
  294.          var _loc1_:InterManagerRequest = null;
  295.          if(!dragProxy && isDragging)
  296.          {
  297.             _loc1_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  298.             _loc1_.name = "getFeedback";
  299.             sandboxRoot.dispatchEvent(_loc1_);
  300.             return _loc1_.value as String;
  301.          }
  302.          return !!dragProxy ? dragProxy.action : DragManager.NONE;
  303.       }
  304.       
  305.       public function endDrag() : void
  306.       {
  307.          var _loc1_:InterManagerRequest = null;
  308.          if(dragProxy)
  309.          {
  310.             sm.removeChildFromSandboxRoot("popUpChildren",dragProxy);
  311.             dragProxy.removeChildAt(0);
  312.             dragProxy = null;
  313.          }
  314.          else if(isDragging)
  315.          {
  316.             _loc1_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  317.             _loc1_.name = "endDrag";
  318.             sandboxRoot.dispatchEvent(_loc1_);
  319.          }
  320.          _loc1_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  321.          _loc1_.name = "mouseShield";
  322.          _loc1_.value = false;
  323.          sandboxRoot.dispatchEvent(_loc1_);
  324.          dragInitiator = null;
  325.          bDoingDrag = false;
  326.          _loc1_ = new InterManagerRequest(InterManagerRequest.DRAG_MANAGER_REQUEST);
  327.          _loc1_.name = "isDragging";
  328.          _loc1_.value = false;
  329.          sandboxRoot.dispatchEvent(_loc1_);
  330.       }
  331.    }
  332. }
  333.